package com.yune.activity;

import android.annotation.SuppressLint;
import android.app.Application;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.util.Log;
import android.widget.Toast;

import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.cache.memory.impl.UsingFreqLimitedMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
import com.yune.R;
import com.yune.activity.main.MainActivity;
import com.yune.activity.service.PlayService;
import com.yune.utils.Network;
import com.yune.utils.Utils;

import org.json.JSONObject;

import java.io.File;

public class App extends Application {
    public static SharedPreferences sp;
    @Override
    public void onCreate() {
        super.onCreate();
        sp=getSharedPreferences("data", Context.MODE_PRIVATE);//MODE_PRIVATE模式-私人，私人模式

        //初始化的时候要初始化ImageLoader相关配置
        DisplayImageOptions options = new DisplayImageOptions.Builder()//DisplayImageOptions显示图像选项，Builder建设者
                .cacheInMemory(false) //设置下载的图片是否缓存在内存中
                .cacheOnDisc(true)//设置下载的图片是否缓存在SD卡中
                .showImageOnLoading(R.drawable.loading)//loading加载，在图像加载期间，传入图像将显示在图像感知视图中
                .showImageOnFail(R.drawable.loaderror)//fail失败，loaderror加载失败
                .bitmapConfig(Bitmap.Config.RGB_565)//bitmapConfig位图配置，bitmap位图，Config配置
                .considerExifParams(true)//是否考虑JPEG图像EXIF参数（旋转，翻转），consider考虑，Exif图像信息，Params参数
                .resetViewBeforeLoading(true)// 设置图片在下载前是否重置，复位
                //reset重置 View视图，Before之前，Loading加载
                .build();
        //ImageLoaderConfiguration，ImageLoader图像装载，Configuration配置
        @SuppressLint("SdCardPath") ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
                //memoryCacheExtraOptions内存缓存选项，memory内存，Cache缓存，Extra额外的，附加的，Options选项
                .memoryCacheExtraOptions(480, 800) // max width, max height，即保存的每个缓存文件的最大长宽
                .threadPoolSize(3) //线程池内加载的数量
                .threadPriority(Thread.NORM_PRIORITY - 2)//threadPriority线程的优先级
                .denyCacheImageMultipleSizesInMemory()//deny否认、拒绝，Cache缓存，Image图片，Multiple多个，Sizes尺寸、大小，In，Memory内存
                .diskCacheFileNameGenerator(new Md5FileNameGenerator()) //将保存的时候的URI名称用MD5 加密，disk磁盘，Generator发电机、生成器
                .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) //你可以通过自己的内存缓存实现 /You can pass your own memory cache implementation
                           //UsingFreq频率，Limited限制，Memory内存，Cache缓存
                .memoryCacheSize(2 * 1024 * 1024) // 内存缓存的最大值
                .diskCacheSize(50 * 1024 * 1024)  // 50 Mb sd卡(本地)缓存的最大值
                .tasksProcessingOrder(QueueProcessingType.LIFO)//tasksProcessingOrder任务处理顺序，tasks人物，Processing处理，Order顺序，设置用于加载和显示图像的任务的队列处理类型（QueueProcessingType队列处理类型）。
                .defaultDisplayImageOptions(options)// 由原先的discCache -> diskCache，/default默认Display显示，默认显示图像选项
                .diskCache(new UnlimitedDiskCache(new File("/sdcard/")))//自定义缓存路径，UnlimitedDiskCache无限磁盘缓存
               //imageDownloader图片下载程序，Downloader下载程序
                .imageDownloader(new BaseImageDownloader(this, 5 * 1000, 30 * 1000)) // connectTimeout (5 s)连接超时, readTimeout (30 s)读取超时/超时时间
                .writeDebugLogs()//写入错误日志
                .build();
        ImageLoader.getInstance().init(config);//getInstance获取实例，init初始化、开始，config配置
        //开启服务
        if (!Utils.isServiceRunning(this,PlayService.class.getName())){
            startService(new Intent(this, PlayService.class));
        }
    }
    //refresh刷新
    public static void refreshLoginMsg(String account,String password){
        Network.get("https://api2.bmob.cn/1/login?username="+account+"&password="+password, res -> {
            if (res!=null){
                try {
                    JSONObject jsonObject = new JSONObject(res);
                    if (jsonObject.isNull("error")){
                        SharedPreferences.Editor edit = App.sp.edit();
                        edit.putString("loginMsg",jsonObject.toString());
                        edit.apply();//apply申请、应用
                    }
                }catch (Exception ignored){
                }
            }
        });
    }
}

